package com.itheima.health.dao;

import com.itheima.health.pojo.Menu;
import com.itheima.health.pojo.Permission;
import com.itheima.health.pojo.Role;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 *     角色管理
 * </p>
 * @Author：Super
 * @Date: 2020/12/4 15:18
 */
public interface RoleDao {


    /**
     * 分页条件查询
     * @param queryString
     * @return
     */
    Page<Role> findByCondition(String queryString);


    /**
     * 查询多有权限
     * @return
     */
    List<Permission> findAllPermission();


    /**
     * 查询多有权限
     * @return
     */
    List<Menu> findAllMenu();


    /**
     * 添加角色信息返回自增长id
     * @param role
     */
    void addRole(Role role);

    /**
     * 添加角色的权限关系
     * @param roleId
     * @param permissionId
     */
    void addRolePermission(@Param("roleId") Integer roleId, @Param("permissionId") Integer permissionId);

    /**
     * 添加角色表的菜单
     * @param roleId
     * @param menuId
     */
    void addRoleMenu(@Param("roleId") Integer roleId, @Param("menuId") Integer menuId);


    /**
     * 查询角色被使用的次数
     * @param id
     * @return
     */
    int findCountByRoleId(Integer id);


    /**
     * 删除角色权限的联系
     * @param id
     */
    void deleteRolePermissionById(Integer id);


    /**
     * 删除角色菜单的联系
     * @param id
     */
    void deleteRoleMenuById(Integer id);


    /**
     * 删除角色
     * @param id
     */
    void deleteRoleById(Integer id);


    /**
     * 修改角色数据回显--查询角色
     * @param id
     * @return
     */
    Role findRoleById(Integer id);


    /**
     * 查询和角色对应的权限
     * @param id
     * @return
     */
    List<Integer> findPermissionIdsByRoleId(Integer id);


    /**
     * 查询和角色对应的菜单
     * @param id
     * @return
     */
    List<Integer> findMenuIdsByRoleId(Integer id);


    /**
     * 修改角色信息
     * @param role
     */
    void update(Role role);

    List<Role> findAll();
}
